/**
 * 拿编译后的tokens，根据#和/，使用递归算法将它们之间的tokens整合起来
 * @param {parseTemplateTokens} tokens 
 */
export default function nextTokens (tokens) {
    // 用于存放结果数组
    let nestedTokens = []
    // 栈结构，存放小tokens
    var sections = []
    // 声明一个收集器，利用它来收集嵌套数组的子元素
    var collector = nestedTokens

    for (let i = 0; i < tokens.length; i++) {
        let token = tokens[i]
        switch (token[0]) {
            case '#':
                collector.push(token)
                sections.push(token)
                collector = token[2] = []
                break
            case '/':
                // 将栈顶的移除，让collector指向新栈顶
                sections.pop()
                collector = sections.length > 0 ? sections[sections.length - 1][2] : nestedTokens
                break
            default:
                collector.push(token)
        }
    }
    return nestedTokens
}